package com.zrrd.product.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zrrd.model.product.SkuAttrValue;
import com.zrrd.model.product.SkuImage;
import com.zrrd.model.product.SkuInfo;
import com.zrrd.model.product.SkuSaleAttrValue;
import com.zrrd.product.mapper.SkuAttrValueMapper;
import com.zrrd.product.mapper.SkuImageMapper;
import com.zrrd.product.mapper.SkuInfoMapper;
import com.zrrd.product.mapper.SkuSaleAttrValueMapper;
import com.zrrd.product.service.SkuInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
public class SkuInfoServiceImpl extends ServiceImpl<SkuInfoMapper, SkuInfo> implements SkuInfoService {
    @Autowired
    private SkuAttrValueMapper skuAttrValueMapper;
    @Autowired
    private SkuImageMapper skuImageMapper;
    @Autowired
    private SkuSaleAttrValueMapper skuSaleAttrValueMapper;


    @Override
    @Transactional
    public void saveSkuInfo(SkuInfo skuInfo) {
        //1.
        this.save(skuInfo);
        //2.
        List<SkuImage> skuImageList = skuInfo.getSkuImageList();
        for (SkuImage skuImage : skuImageList) {
            skuImage.setSkuId(skuInfo.getId());
            skuImageMapper.insert(skuImage);
        }
        //3.
        List<SkuSaleAttrValue> skuSaleAttrValueList = skuInfo.getSkuSaleAttrValueList();
        for (SkuSaleAttrValue skuSaleAttrValue : skuSaleAttrValueList) {
            skuSaleAttrValue.setSkuId(skuInfo.getId());
            skuSaleAttrValue.setSkuId(skuInfo.getSpuId());
            skuSaleAttrValueMapper.insert(skuSaleAttrValue);
        }
        //4.
        List<SkuAttrValue> skuAttrValueList = skuInfo.getSkuAttrValueList();
        for (SkuAttrValue skuAttrValue : skuAttrValueList) {
            skuAttrValue.setSkuId(skuInfo.getId());
            skuAttrValueMapper.insert(skuAttrValue);
        }


    }

    @Override
    public SkuInfo getSkuInfo(Long skuId) {
        //根据sku——id获取sku信息
        SkuInfo skuInfo = this.getById(skuId);
        //查询sku图片信息
        QueryWrapper<SkuImage> wrapper = new QueryWrapper<>();
        wrapper.eq("sku_id", skuId);
        //执行查询
        List<SkuImage> skuImages = skuImageMapper.selectList(wrapper);
        //将查询到的sku图片列表，设置给skuinfo
        skuInfo.setSkuImageList(skuImages);
        return skuInfo;
    }
}
